#pragma once

#include "Subject.h"

#include <cxcore.h>
#include <highgui.h>

#pragma comment (lib, "cxcore210.lib")
#pragma comment (lib, "highgui210.lib")

class Observer
{
public:
	virtual ~Observer();
	virtual void Update(Subject* sub) = 0;
	virtual void Show() = 0;
protected:
	Observer();
	State _stat;
private:
};

class ContentObserver : public Observer
{
public:
	ContentObserver(Subject* sub);
	~ContentObserver();
	Subject* GetSubject();
	void Update(Subject* sub);
	void Show();
protected:
private:
	Subject* _sub;

	IplImage* _img;
};

class SizeObserver : public Observer
{
public:
	SizeObserver(Subject* sub);
	~SizeObserver();
	Subject* GetSubject();
	void Update(Subject* sub);
	void Show();
protected:
private:
	Subject* _sub;

	int _dim[2];
};